package kn.cstf2.login.Server;

import kn.cstf2.global.Utils.*;
import kn.cstf2.login.Server.*;
import kn.cstf2.global.Utils.CstF2Exception;
import kn.mx.cstf2.dto.UsuarioDto;
import kn.mx.cstf2.dto.UsuarioDto;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

import org.apache.log4j.Logger;

/**
 * @author Izhar Gamaliel Hernandez Cruz Programador Java Junior Desarrollado para
 * Kuehne + Nagel
 */
public class AdaptadorLogin {

    private static Logger log = Logger.getLogger(AdaptadorLogin.class);

    public static UsuarioDto obtenerUsuario(ResultSet rs) {
        UsuarioDto usuario = null;
        try {
            if (rs.next()) {
                usuario = new UsuarioDto();
                usuario.setId(rs.getInt("id"));
                usuario.setName(rs.getString("username"));
                usuario.setPassword(rs.getString("pwd"));
                usuario.setEmail(rs.getString("email"));
                usuario.setTipo(rs.getString("usertype"));
                usuario.setSU(rs.getBoolean("su"));
                usuario.setTra(rs.getBoolean("transition"));
                usuario.setTran(rs.getBoolean("transitionaccess"));
                usuario.setImp(rs.getBoolean("implementation"));
                usuario.setImpl(rs.getBoolean("implementationaccess"));
                usuario.setCop(rs.getBoolean("cop"));
                usuario.setCOP(rs.getBoolean("copaccess"));
                
            }
        } catch (SQLException ex) {
            log.error("No se pudo obtener la informacion del UsuarioDto", ex);
            throw new CstF2Exception("No se pudo obtener la informacion del UsuarioDto");
        }
        return usuario;
    }
    
    

    public static UsuarioDto obtenerUsuario(Map row) throws SQLException {
        UsuarioDto usuario = null;
        usuario = new UsuarioDto();
		usuario.setId((Integer)row.get("id"));
		usuario.setName((String)row.get("username"));
		usuario.setPassword((String)row.get("pwd"));
		usuario.setEmail((String)row.get("email"));
		usuario.setTipo((String)row.get("usertype"));
		usuario.setSU((Boolean)row.get("su"));
		usuario.setTra((Boolean)row.get("transition"));
		usuario.setTran((Boolean)row.get("transitionaccess"));
		usuario.setImp((Boolean)row.get("implementation"));
		usuario.setImpl((Boolean)row.get("implementationaccess"));
		usuario.setCop((Boolean)row.get("cop"));
		usuario.setCOP((Boolean)row.get("copaccess"));
        return usuario;
    }


    public static Collection<UsuarioDto> obtenerListaUsuarioDtos(ResultSet rs) {
        Collection<UsuarioDto> usuarios = null;

        try {
            if (rs.next()) {
                usuarios = new ArrayList<UsuarioDto>();
                do {
                    UsuarioDto usuario = new UsuarioDto();
                    usuario.setName(rs.getString("username"));
                    usuario.setPassword(rs.getString("pwd"));
                    //usuario.setTipo(rs.getString("tipo"));
                    usuarios.add(usuario);
                } while (rs.next());
            }
        } catch (SQLException ex) {
            log.error("No se pudo obtener la informacion de los UsuarioDtos", ex);
            throw new CstF2Exception("No se pudo obtener la informacion de los UsuarioDtos");
        }
        return usuarios;
    }
    
}